package com.icinfo.cloud.provider.punish.approval.dto;

import com.icinfo.framework.tools.utils.StringUtils;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
import java.util.List;

@Data
public class PersonalTaskDto {
    /**
     * 分页参数 页码数
     */
    @NotNull(message = "页码数必传")
    private Integer pageNum;

    /**
     * 分页参数 每页条数
     */
    @NotNull(message = "每页条数必传")
    private Integer length;

    /**
     * 对象排序字段
     */
    private String orderField;

    /**
     * 对象排序方式 asc,desc
     */
    private String orderMethod;

    /**
     * 时效颜色值:红 red,橙 orange,黄 yellow,绿 green,蓝 blue
     */
    private String timeColor;

    /**
     * 标题
     */
    private String approvalTitle;

    /**
     * 审批事项: 不做树形
     */
    private String auditItem;

    /**
     * 提交开始时间 :yyyy-MM-dd
     */
    private String startDate;

    /**
     * 提交结束时间: yyyy-MM-dd
     */
    private String endDate;

    /**
     * 状态：pending  审批中  ，pass 审核完成通过，return 审核完成退回
     */
    private String auditStep;

    /**
     * 当前登录用户Id
     * 前端客不传 后台取值
     */
    private String userId;

    /**
     *
     * 案件Id
     */
    private String caseId;

    /**
     * 审批用户名
     */
    private String approvalUserName;
    /**
     * 是否为联合法制审核；1 是 0 否（不传默认为否）
     */
    private String isApprovalCenter;
    /**
     * 案件编号
     */
    private String caseNumber;
    /**
     * 案由--模糊查询
     **/
    private String caseReason;

    /**
     * 联合法制审核 审批单位名称
     */
    private String approvalOrgName;

    /**
     * 联合法制审核 审批单位编码 多个逗号分隔
     */
    private String approvalOrgCode;

    /**
     * 办案单位名称
     */
    private String handlerOrgName;

    /**
     * 当事人名称
     */
    private String partyName;

    /**
     * 登录人机构编码
     */
    @NotBlank(message = "机构编码必传")
    private String orgCode;

    /**
     * 领域编码
     **/
    private String territoryCode;

    /**
     * 类型裁执分离或者处罚办案  1-处罚办案，2-裁执分离
     */
    private String approvalType;


    /****
     * 查询标识 : 0.代办任务列表，1.已完结列表 ,2全部列表
     **/
    @NotNull(message = "查询标识不能为空")
    private Integer waitHandleFlag;
    /****
     * 案件查询标识 ：0.案件办理列表（包括暂存和立案数据）,1.案件查询（不包括暂存和立案数据）
     **/
    private Integer caseQueryFlag;

    /**
     * 当事人类型集合
     */
    private List<String> partyNameTypeList;

    /**
     * 案发详细地址
     */
    private String caseHappenAddressDetail;

    /**
     * 文书文号
     */
    private String documentNumber;

    /**
     * 违法级别
     */
    private String illegalLevel;

    /**
     * 案件来源
     **/
    private String caseSource;

    /**
     * 办案阶段
     **/
    private String caseStage;

    /**
     * 办案期限
     **/
    private Integer timeLimit;

    /**
     * 立案时间--开始
     **/
    private String  registerStartTime;
    /**
     * 立案时间---结束
     **/
    private String registerEndTime;


    /**
     * 结案时间--开始
     **/
    private String caseEndStartTime;
    /**
     * 结案时间---结束
     **/
    private String caseEndEndTime;


    /**
     * 裁决完毕时间--开始
     **/
    private String verdictStartTime;
    /**
     * 裁决完毕时间---结束
     **/
    private String verdictEndTime;

    /**
     * 时效--开始
     **/
    private Timestamp timeLimitStart;
    /**
     * 时效---结束
     **/
    private Timestamp timeLimitEnd;
    /**
     * 案件标签
     **/
    private String caseTag;

    /**
     * 案卷号
     **/
    private String caseFileNumber;

    /**
     * 标签列表--不用传
     **/
    private List tagList;
    /**
     * 机构编码列表--不用传
     **/
    private List orgCodeList;
    /**
     * 部门编码列表--不用传
     **/
    private List deptCodeList;
    /**
     * 部门机构判断--不用传
     **/
    private Integer org;

    /**
     * 处罚结果
     **/
    private String punishKind;


    /**
     * 增加查询条件
     *
     * 1、案件类型：简易程序、普通程序和简案快办。
     *
     * 2、处罚结论：予以处罚、不予处罚；
     *
     * 3、处罚种类：包含系统支持的所有处罚种。
     *
     * 4、执行方式：强制执行、自觉履行。
     *
     * 5、案件状态
     *   a、待立案（《立案审批表》待提交的时候）
     *
     *   b、立案审批（《立案审批表》
     *
     *   c、办案中
     *
     *   d、暂停（中止）
     *
     *   e、已终止
     *
     *   f、已结案
     */

    /**
     * 案件状态
     *   CASE_REGISTER("0", "待立案"),
     *     CASE_APPROVE("1", "立案审批"),
     *     HANDLING_CASE("2", "办案中"),
     *     END_CASE("3", "结案"),
     *     TEMP("4", "立案暂存"),
     *     SUSPEND("5", "暂停/中止"),
     *     TERMINATE("8", "终止"),
     *     POSTPONE("6", "案件延期"),
     *     REVOKE("7", "立案撤销"),
     *     PUNISH_REVOKE("9", "决定撤销");
     */
    private String caseStatus;

    /**
     * 执行方式 字典取值传汉字
     */
    private String executeType;

    /**
     * 处罚种类 字典取值传汉字
     */
    private String punishKinds;

    /**
     * 案件类型：简易程序、普通程序和简案快办 分别对应 1、 2、 3
     */
    private String caseType;

    /**
     * 处罚结论: 1 予以处罚, 2 不予处罚
     * @param
     */
    private String punishConclusion;

    /**
     * 后台使用，前端忽略
     * @param
     */
    private String blue;
    /**
     * 处罚金额（最小）
     */
    private String punishMoneyMin;

    /**
     * 处罚金额（最大）
     */
    private String punishMoneyMax;


    /**
     * 查询列表类型 1:工作台或各阶段查询(不包含办结案件查询) 2:全部待办或案件查询
     */
    private String queryListType;


    /****
     * 当事人查询类别 个人 (1 个人 2 法人) （后端使用）
     **/
    private String  personPartyType;

    /****
     *  当事人查询类别 法人类别查询条件（后端使用）
     **/
    private List<String>  legalPartyTypeList;

    public void setRegisterStartTime(String registerStartTime) {
        if(StringUtils.isNotEmpty(registerStartTime)){
            registerStartTime = registerStartTime+" 00:00:00";
        }
        this.registerStartTime = registerStartTime;
    }

    public void setRegisterEndTime(String registerEndTime) {
        if(StringUtils.isNotEmpty(registerEndTime)){
            registerEndTime = registerEndTime+" 23:59:59";
        }
        this.registerEndTime = registerEndTime;
    }

    public void setCaseEndStartTime(String caseEndStartTime) {
        if(StringUtils.isNotEmpty(caseEndStartTime)){
            caseEndStartTime = caseEndStartTime+" 00:00:00";
        }
        this.caseEndStartTime = caseEndStartTime;
    }

    public void setCaseEndEndTime(String caseEndEndTime) {
        if(StringUtils.isNotEmpty(caseEndEndTime)){
            caseEndEndTime = caseEndEndTime+" 23:59:59";
        }
        this.caseEndEndTime = caseEndEndTime;
    }

    public void setVerdictStartTime(String verdictStartTime) {
        if(StringUtils.isNotEmpty(verdictStartTime)){
            verdictStartTime = verdictStartTime+" 00:00:00";
        }
        this.verdictStartTime = verdictStartTime;
    }

    public void setVerdictEndTime(String verdictEndTime) {
        if(StringUtils.isNotEmpty(verdictEndTime)){
            verdictEndTime = verdictEndTime+" 23:59:59";
        }
        this.verdictEndTime = verdictEndTime;
    }

    public String getRegisterStartTime() {
        return registerStartTime;
    }

    public String getRegisterEndTime() {
        return registerEndTime;
    }

    public String getCaseEndStartTime() {
        return caseEndStartTime;
    }

    public String getCaseEndEndTime() {
        return caseEndEndTime;
    }

    public String getVerdictStartTime() {
        return verdictStartTime;
    }

    public String getVerdictEndTime() {
        return verdictEndTime;
    }
}
